<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Cron表达式 | VanKa</title><script src="https://cdn.bootcss.com/valine/1.4.4/Valine.min.js"></script><link rel="stylesheet" href="/vcb/css/arknights.css"><link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.1.2/styles/atom-one-dark-reasonable.min.css"><style>@font-face {
 font-family: BenderLight;
 src: local('Bender'), url("/vcb/font/BenderLight.ttf");
}
@font-face {
 font-family: 'JetBrains Mono';
 src: local('JetBrains Mono'), url('/vcb/font/JetBrainsMono-Regular.woff2') format('woff2');
}</style><meta name="generator" content="Hexo 5.4.0"><link rel="alternate" href="/vcb/atom.xml" title="VanKa" type="application/atom+xml">
</head><body><header><nav><a href="/vcb/">Home</a><a href="/vcb/archives/">Archives</a></nav></header><main><article><div id="post-bg"><div id="post-title"><h1>Cron表达式</h1><hr></div><div id="post-content"><h4 id="定时任务调用方式"><a href="#定时任务调用方式" class="headerlink" title="定时任务调用方式"></a>定时任务调用方式</h4><ol>
<li><p>固定速率</p>
<p>如果需要以固定速率执行，只要将注解中指定的属性名称改成fixedRate即可，以下方法将以一个固定速率5s来调用一次执行，这个周期是以上一个任务开始时间为基准，从上一任务开始执行后5s再次调用：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">@Scheduled(fixedDelay = 5000)</span><br><span class="line"> public void testTask() &#123;</span><br><span class="line">  logger.info(&quot;测试定时任务&quot;);</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></figure></li>
<li><p>cron表达式</p>
<p>使用cron表达式，可以实现定时调用如：每天凌晨调用</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">@Scheduled(cron = &quot;cron = &quot;0 0 2 * * ?&quot;&quot;)</span><br><span class="line"> public void testTaskWithDate() &#123;</span><br><span class="line">  logger.info(&quot;测试2016.定时任务&quot;);</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></figure></li>
</ol>
<h4 id="cron参数"><a href="#cron参数" class="headerlink" title="cron参数"></a>cron参数</h4><p>一个cron表达式有至少6个（也可能7个）有空格分隔的时间元素</p>
<table>
<thead>
<tr>
<th>单位</th>
<th>数值</th>
</tr>
</thead>
<tbody><tr>
<td>秒</td>
<td>（0~59）</td>
</tr>
<tr>
<td>分钟</td>
<td>（0~59）</td>
</tr>
<tr>
<td>小时</td>
<td>（0~23）</td>
</tr>
<tr>
<td>天</td>
<td>（0~31）</td>
</tr>
<tr>
<td>月</td>
<td>（0~11）</td>
</tr>
<tr>
<td>周(星期)</td>
<td>（1~7） 或 （SUN，MON，TUE，WED，THU，FRI，SAT）</td>
</tr>
<tr>
<td>年份</td>
<td>（1970－2099）  @Scheduled是不支持的，spring quartz支持</td>
</tr>
</tbody></table>
<blockquote>
<p>月份中的日期 和 星期中的日期 这两个元素互斥的,必须要对其中一个设置 ?</p>
</blockquote>
<h4 id="特殊字符"><a href="#特殊字符" class="headerlink" title="特殊字符"></a>特殊字符</h4><table>
<thead>
<tr>
<th>特殊字符</th>
<th>含义</th>
<th>案例</th>
</tr>
</thead>
<tbody><tr>
<td>*</td>
<td>表示所有可能的值</td>
<td>* 在子表达式（月）里表示每个月的含义， * 在子表达式（天（星期））表示星期的每一天</td>
</tr>
<tr>
<td>/</td>
<td>表示数值的增量</td>
<td>子表达式（分钟）里的 “3/20” 表示从第3分钟开始，每20分钟（它和“3，23，43”）的含义一样</td>
</tr>
<tr>
<td>？</td>
<td>表示不指定值 仅被用于天（月）和天（星期）</td>
<td>当2个子表达式其中之一被指定了值以后，为了避免冲突，需要将另一个子表达式的值设为“？”</td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th>字段</th>
<th>允许值</th>
<th>允许的特殊字符</th>
</tr>
</thead>
<tbody><tr>
<td>秒</td>
<td>0-59</td>
<td>, - * /</td>
</tr>
<tr>
<td>分</td>
<td>0-59</td>
<td>, - * /</td>
</tr>
<tr>
<td>小时</td>
<td>0-23</td>
<td>, - * /</td>
</tr>
<tr>
<td>日期</td>
<td>1-31</td>
<td>, - * ? / L W C</td>
</tr>
<tr>
<td>月份</td>
<td>1-12 或者 JAN-DEC</td>
<td>, - * /</td>
</tr>
<tr>
<td>星期</td>
<td>1-7 或者 SUN-SAT</td>
<td>, - * ? / L C #</td>
</tr>
<tr>
<td>年（可选）</td>
<td>留空, 1970-2099</td>
<td>, - * /</td>
</tr>
</tbody></table>
<h4 id="例子"><a href="#例子" class="headerlink" title="例子"></a>例子</h4><table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>0 0 10,14,16 * * ?</td>
<td>每天上午10点，下午2点，4点</td>
</tr>
<tr>
<td>0 0/30 9-17 * * ?</td>
<td>朝九晚五工作时间内每半小时</td>
</tr>
<tr>
<td>0 0 12 ? * WED</td>
<td>表示每个星期三中午12点</td>
</tr>
<tr>
<td>0 0 12 * * ?</td>
<td>每天中午12点触发</td>
</tr>
<tr>
<td>0 15 10 ? * *</td>
<td>每天上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 * * ?</td>
<td>每天上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 * * ? *</td>
<td>每天上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 * * ? 2005</td>
<td>2005年的每天上午10:15触发</td>
</tr>
<tr>
<td>0 * 14 * * ?</td>
<td>在每天下午2点到下午2:59期间的每1分钟触发</td>
</tr>
<tr>
<td>0 0/5 14 * * ?</td>
<td>在每天下午2点到下午2:55期间的每5分钟触发</td>
</tr>
<tr>
<td>0 0/5 14,18 * * ?</td>
<td>在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发</td>
</tr>
<tr>
<td>0 0-5 14 * * ?</td>
<td>在每天下午2点到下午2:05期间的每1分钟触发</td>
</tr>
<tr>
<td>0 10,44 14 ? 3 WED</td>
<td>每年三月的星期三的下午2:10和2:44触发</td>
</tr>
<tr>
<td>0 15 10 ? * MON-FRI</td>
<td>周一至周五的上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 15 * ?</td>
<td>每月15日上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 L * ?</td>
<td>每月最后一日的上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 ? * 6L</td>
<td>每月的最后一个星期五上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 ? * 6L 2002-2005</td>
<td>2002年至2005年的每月的最后一个星期五上午10:15触发</td>
</tr>
<tr>
<td>0 15 10 ? * 6#3</td>
<td>每月的第三个星期五上午10:15触发</td>
</tr>
</tbody></table>
<p>参考</p>
<p><a target="_blank" rel="noopener" href="https://www.jb51.net/article/103861.htm">https://www.jb51.net/article/103861.htm</a></p>
<div id="paginator"></div></div><div id="post-footer"><hr><a href="/vcb/2021/11/02/vue-element-admin/">← Prev vue-element-admin</a><span style="color: #fe2"> | </span><a href="/vcb/2021/10/30/Nacos/">Nacos Next →</a><hr></div><div id="bottom-btn"><a id="to-index" href="#post-index" title="index">≡</a><a id="to-top" href="#post-title" title="to top">∧</a></div><div id="Valine"></div><script>new Valine({
 el: '#Valine'
 , appId: ''
 , appKey: ''
 , placeholder: '此条评论委托企鹅物流发送'
})</script></div></article><aside><div id="about"><a href="/vcb/" id="logo"><img src="https://ak.hypergryph.com/assets/index/images/ak/pc/faction/1.png" alt="Logo"></a><h1 id="Dr"><a href="/"> Dr.VanKa</a></h1><section id="total"><a id="total-archives" href="/vcb/archives"><span class="total-title">Archives Total:</span><span class="total-number">12</span></a><div id="total-tags"><span class="total-title">Tags:</span><span class="total-number">13</span></div><div id="total-categories"><span class="total-title">Categories:</span><span class="total-number">1</span></div></section></div><div id="aside-block"><h1>INDEX</h1><div id="post-index"><ol class="toc"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E8%B0%83%E7%94%A8%E6%96%B9%E5%BC%8F"><span class="toc-number">1.</span> <span class="toc-text">定时任务调用方式</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#cron%E5%8F%82%E6%95%B0"><span class="toc-number">2.</span> <span class="toc-text">cron参数</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6"><span class="toc-number">3.</span> <span class="toc-text">特殊字符</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E4%BE%8B%E5%AD%90"><span class="toc-number">4.</span> <span class="toc-text">例子</span></a></li></ol></div></div><footer><nobr><span class="text-title">©</span><span class="text-content">1970 to 2020</span></nobr><wbr><nobr><span class="text-title">ICP</span><span class="text-content">——备案号——</span></nobr><wbr><wbr><nobr>published with&nbsp;<a target="_blank" rel="noopener" href="http://hexo.io">Hexo&nbsp;</a></nobr><wbr><nobr>Theme&nbsp;<a target="_blank" rel="noopener" href="https://github.com/Yue-plus/hexo-theme-arknights">Arknight&nbsp;</a></nobr><wbr><nobr>by&nbsp;<a target="_blank" rel="noopener" href="https://github.com/Yue-plus">Yue_plus</a></nobr></footer></aside></main><canvas id="canvas-dust"></canvas><script src="/vcb/js/arknights.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.1.2/highlight.min.js"></script></body></html>